"""
本章节研究是闭包的使用
"""

account_amount=0 # 账户余额

# 定义一个方法 存款和取款金额
def atm(num,deposit=True):
    global  account_amount  # 定义全局变量 函数内部和外部都可以使用
    if deposit:
        account_amount+=num
        print(f"存款:+{num},账户余额:{account_amount}")
    else:
        account_amount-=num
        print(f"取款:-{num},账户余额:{account_amount}")


atm(300)
atm(300)
atm(100,False)




print("------------下面使用闭包的方式---------------")
def account_create(initial_amount=0):  # 外部函数

    def atm(num,deposit=True):  # 内层函数

        nonlocal  initial_amount  # 需要使用nonlocal关键字修饰外部函数的变量才可以在内部函数中修改它
        if deposit:
            initial_amount += num
            print(f"存款:+{num},账户余额:{initial_amount}")
        else:
            initial_amount -= num
            print(f"取款:-{num},账户余额:{initial_amount}")

    return atm  # 返回内部函数

fn=account_create()
fn(300)
fn(200)
fn(300,False)



